BackForward
%macro rspmeans(indata=, out=, group=, var=);
   proc sort data=&indata out=rspmeanstmp; by &group; run;
   proc means data=rspmeanstmp;
      by &group;
      var &var;
      output out=rspmmeans N=N mean=mean std=std median=med;
   proc means data=rspmeanstmp;
      var &var;
      output out=rspallmeans mean=mean;
   run;
   proc sql;
      create table &out as
      select (i.%trim(%left(&var))-m.mean+a.mean) as &var, %selectvar(indata=rspmeanstmp, dalias=i, except=&var)
      from rspmeanstmp as i, rspmmeans as m, rspallmeans as a
      where i.%trim(%left(&group))=m.%trim(%left(&group));
      drop table rspmeanstmp; drop table rspmmeans; drop table rspallmeans; 
   quit;
%mend rspmeans;